package servidor;
	
import clientes.Cliente;
import clienteslogados.ClienteLogado;
import constantes.TipoEventoConst;
import eventop2p.EventoP2P;
import eventos.Evento;
import fachada.Fachada;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Date;
import java.sql.SQLException;
import java.sql.Time;
import java.util.HashMap;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import tiposeventos.TipoEvento;
import tiposfisicos.TipoFisico;
import tiposstatus.TipoStatus;
	
public class IdentificadorPerfilServidor implements IdentificadorPerfilServidorInterface {
	Fachada fachada;
    public IdentificadorPerfilServidor() throws SQLException, ClassNotFoundException
    {
        fachada = Fachada.getFachada();
    }

    public static void main(String args[]) {
        System.err.println("SERVIDOR DE IDENTIFICADOR DE PERFIL");
        System.err.println("---------------------------------------------------------------------------------");
        System.err.println("Feito por Anderson Carlos, David John, Marlon Cavalcanti, Luiz Cláudio e Valdir Salgueiro");
        System.err.println("---------------------------------------------------------------------------------");

        try
        {
            IdentificadorPerfilServidor obj = new IdentificadorPerfilServidor();
            IdentificadorPerfilServidorInterface stub = (IdentificadorPerfilServidorInterface) UnicastRemoteObject.exportObject(obj, 0);

            // Bind the remote object's stub in the registry
            //Registry registry = LocateRegistry.getRegistry();
            Registry registry = LocateRegistry.createRegistry(1099);
            registry.bind("IdentificadorPerfilServidor", stub);
            System.err.println("SERVIDOR FUNCIONANDO");
        }
        catch (Exception e)
        {
            System.err.println("ERRO NO SERVIDOR: " + e.toString());
            e.printStackTrace();
        }
    }

    public Cliente login(String login, String senha, String IP) throws RemoteException
    {
        Cliente cliente = new Cliente();
        cliente.setLogin(login);
        cliente.setSenha(senha);
        try {
            cliente = fachada.procurar(cliente);
            if(cliente == null)
            {
                return null;
            }
            else
            {
                ClienteLogado clienteLogado = new ClienteLogado();
                clienteLogado.setId(cliente.getId());
                if(fachada.procurar(clienteLogado) == null)
                {
                    clienteLogado.setIP(IP);
                    clienteLogado.setDataLogin(new Date(new java.util.Date().getTime()));
                    clienteLogado.setHoraLogin(new Time(new java.util.Date().getTime()));
                    fachada.adicionar(clienteLogado);
                }
                else
                {
                    clienteLogado.setIP(IP);
                    clienteLogado.setDataLogin(new Date(new java.util.Date().getTime()));
                    clienteLogado.setHoraLogin(new Time(new java.util.Date().getTime()));
                    fachada.atualizar(clienteLogado);
                }
                
                return cliente;
            }
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public Vector<Cliente> getClientesAtivos() throws RemoteException
    {
        TipoStatus ts = new TipoStatus();
        ts.setDescricao("Ativado");
        try {
            ts = fachada.procurar(ts);
            Cliente cliente = new Cliente();
            cliente.setStatus(ts.getId());
            Vector<Cliente> clientesR = fachada.procurarLista(cliente);
            for(int i = 0; i < clientesR.size(); i++)
            {
                clientesR.elementAt(i).setSenha(null);
                clientesR.elementAt(i).setLogin(null);
            }
            return clientesR;
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return null;
    }

    public boolean logout(int idCliente) throws RemoteException
    {
        Cliente cliente = new Cliente();
        cliente.setId(idCliente);
        ClienteLogado clienteLogado = new ClienteLogado();
        clienteLogado.setId(idCliente);
        try
        {
            if(fachada.procurar(clienteLogado) == null)
                return true;
            fachada.remover(clienteLogado);
            cliente = fachada.procurar(cliente);
            TipoStatus ts = new TipoStatus();
            ts.setDescricao("Inativo");
            ts = fachada.procurar(ts);
            cliente.setStatus(ts.getId());
            fachada.atualizar(cliente);
            return true;
        }
        catch (SQLException ex)
        {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (ClassNotFoundException ex)
        {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public boolean cadastrarCliente(Cliente cliente) throws RemoteException
    {
        Cliente clienteTemp = new Cliente();
        clienteTemp.setLogin(cliente.getLogin());
        try {
            clienteTemp = fachada.procurar(clienteTemp);
            if(clienteTemp == null)
            {
                fachada.adicionar(cliente);
                return true;
            }
            else
            {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public boolean removerCliente(Cliente cliente) throws RemoteException
    {
        try {

            fachada.remover(cliente);

        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;

    }

    public boolean enviarMensagem(Cliente origem, Cliente destino) throws RemoteException
    {
        try {
            Evento evento = new Evento();
            evento.setDataEvento(new Date(new java.util.Date().getTime()));
            evento.setHoraEvento(new Time(new java.util.Date().getTime()));
            TipoEvento te = new TipoEvento();
            te.setDescricao(TipoEventoConst.MENSAGEM);
            evento.setTipoEvento(fachada.procurar(te).getId());
            evento.setClienteOrigem(origem.getId());
            fachada.adicionar(evento);
            evento = fachada.procurar(evento);
            EventoP2P eventop2p = new EventoP2P();
            eventop2p.setId(evento.getId());
            eventop2p.setDestino(destino.getId());
            fachada.adicionar(eventop2p);

            return true;
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }


    public void adicionar(Cliente cliente) throws RemoteException
    {
        try {
            fachada.adicionar(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void adicionar(ClienteLogado cliente) throws RemoteException
    {
        try {
            fachada.adicionar(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void adicionar(Evento evento) throws RemoteException
    {
        try {
            fachada.adicionar(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void adicionar(EventoP2P evento) throws RemoteException
    {
        try {
            fachada.adicionar(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void adicionar(TipoEvento tipoEvento) throws RemoteException
    {
        try {
            fachada.adicionar(tipoEvento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void adicionar(TipoFisico tipoFisico) throws RemoteException
    {
        try {
            fachada.adicionar(tipoFisico);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void adicionar(TipoStatus tipoStatus) throws RemoteException
    {
        try {
            fachada.adicionar(tipoStatus);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void remover(Cliente cliente) throws RemoteException
    {
        try {
            fachada.remover(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(Cliente cliente, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(cliente, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(Cliente cliente, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(cliente, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(ClienteLogado cliente) throws RemoteException
    {
        try {
            fachada.remover(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(ClienteLogado cliente, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(cliente, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(ClienteLogado cliente, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(cliente, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(Evento evento) throws RemoteException
    {
        try {
            fachada.remover(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(Evento evento, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(evento, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(Evento evento, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(evento, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(EventoP2P evento) throws RemoteException
    {
        try {
            fachada.remover(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(EventoP2P evento, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(evento, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(EventoP2P evento, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(evento, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoEvento tipoEvento) throws RemoteException
    {
        try {
            fachada.remover(tipoEvento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoEvento tipoEvento, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(tipoEvento, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoEvento tipoEvento, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(tipoEvento, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoStatus tipoStatus) throws RemoteException
    {
        try {
            fachada.remover(tipoStatus);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoStatus tipoStatus, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(tipoStatus, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoStatus tipoStatus, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(tipoStatus, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoFisico tipoFisico) throws RemoteException
    {
        try {
            fachada.remover(tipoFisico);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoFisico tipoFisico, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(tipoFisico, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void remover(TipoFisico tipoFisico, HashMap<String,String> operadores, Boolean operacao) throws RemoteException
    {
        try {
            fachada.remover(tipoFisico, operadores, operacao);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(Cliente cliente) throws RemoteException
    {
        try {
            fachada.atualizar(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(ClienteLogado cliente) throws RemoteException
    {
        try {
            fachada.atualizar(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(Evento evento) throws RemoteException
    {
        try {
            fachada.atualizar(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(EventoP2P evento) throws RemoteException
    {
        try {
            fachada.atualizar(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(TipoStatus tipoStatus) throws RemoteException
    {
        try {
            fachada.atualizar(tipoStatus);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(TipoEvento tipoEvento) throws RemoteException
    {
        try {
            fachada.atualizar(tipoEvento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void atualizar(TipoFisico tipoFisico) throws RemoteException
    {
        try {
            fachada.atualizar(tipoFisico);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public Cliente procurar(Cliente cliente) throws RemoteException
    {
        try {
            return fachada.procurar(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Cliente procurar(Cliente cliente, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(cliente, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public ClienteLogado procurar(ClienteLogado cliente) throws RemoteException
    {
        try {
            return fachada.procurar(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public ClienteLogado procurar(ClienteLogado cliente, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(cliente, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Evento procurar(Evento evento) throws RemoteException
    {
        try {
            return fachada.procurar(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Evento procurar(Evento evento,HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(evento, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public EventoP2P procurar(EventoP2P eventoP2P) throws RemoteException
    {
        try {
            return fachada.procurar(eventoP2P);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public EventoP2P procurar(EventoP2P eventoP2P, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(eventoP2P, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public TipoEvento procurar(TipoEvento evento) throws RemoteException
    {
        try {
            return fachada.procurar(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public TipoEvento procurar(TipoEvento tipoEvento, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(tipoEvento, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public TipoFisico procurar(TipoFisico tipoFisico) throws RemoteException
    {
        try {
            return fachada.procurar(tipoFisico);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public TipoFisico procurar(TipoFisico tipoFisico, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(tipoFisico, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public TipoStatus procurar(TipoStatus tipoStatus) throws RemoteException
    {
        try {
            return fachada.procurar(tipoStatus);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public TipoStatus procurar(TipoStatus tipoStatus, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurar(tipoStatus, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

public Vector procurarLista(Cliente cliente) throws RemoteException
    {
        try {
            return fachada.procurarLista(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(Cliente cliente, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(cliente, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(ClienteLogado cliente) throws RemoteException
    {
        try {
            return fachada.procurarLista(cliente);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(ClienteLogado cliente, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(cliente, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(Evento evento) throws RemoteException
    {
        try {
            return fachada.procurarLista(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(Evento evento,HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(evento, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(EventoP2P eventoP2P) throws RemoteException
    {
        try {
            return fachada.procurarLista(eventoP2P);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(EventoP2P eventoP2P, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(eventoP2P, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(TipoEvento evento) throws RemoteException
    {
        try {
            return fachada.procurarLista(evento);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(TipoEvento tipoEvento, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(tipoEvento, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(TipoFisico tipoFisico) throws RemoteException
    {
        try {
            return fachada.procurarLista(tipoFisico);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(TipoFisico tipoFisico, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(tipoFisico, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(TipoStatus tipoStatus) throws RemoteException
    {
        try {
            return fachada.procurarLista(tipoStatus);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public Vector procurarLista(TipoStatus tipoStatus, HashMap<String,String> operadores) throws RemoteException
    {
        try {
            return fachada.procurarLista(tipoStatus, operadores);
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    public int getQuantidadeCliente() throws RemoteException
    {
        try {
            return fachada.getQuantidadeCliente();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
    public int getQuantidadeClienteLogado() throws RemoteException
    {
        try {
            return fachada.getQuantidadeClienteLogado();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
    public int getQuantidadeEvento() throws RemoteException
    {
        try {
            return fachada.getQuantidadeEvento();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
    public int getQuantidadeEventoP2P() throws RemoteException
    {
        try {
            return fachada.getQuantidadeEventoP2P();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
    public int getQuantidadeTipoEvento() throws RemoteException
    {
        try {
            return fachada.getQuantidadeTipoEvento();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
    public int getQuantidadeTipoFisico() throws RemoteException
    {
        try
        {
            return fachada.getQuantidadeTipoFisico();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
    public int getQuantidadeTipoStatus() throws RemoteException
    {
        try {
            return fachada.getQuantidadeTipoStatus();
        } catch (SQLException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(IdentificadorPerfilServidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return -1;
    }
}
